﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using ECOSYSTEM_Dominio;

namespace ECOSYSTEM_DAL
{
    public class ReciboIngresoDAL
    {
        SqlConnection cnn;
        public Boolean guardarReciboIngreso(ReciboIngreso elRecIngreso)
        {
            try
            {
                cnn = (SqlConnection)ConexionSQL.getInstancia().getConexion();
                cnn.Open();
                SqlCommand cmd = new SqlCommand("RegistrarReciboIngreso", cnn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add("@NroRecIngreso", SqlDbType.NVarChar, 10);
                cmd.Parameters.Add("@Concepto", SqlDbType.Text);
                cmd.Parameters.Add("@MontoTotal", SqlDbType.Float);
                cmd.Parameters.Add("@A_Cuenta", SqlDbType.Float);
                cmd.Parameters.Add("@Saldo", SqlDbType.Float);
                cmd.Parameters.Add("@FecEmision", SqlDbType.NVarChar, 12);
                cmd.Parameters.Add("@RUC_DNI_Cliente", SqlDbType.NVarChar, 11);

                cmd.Parameters["@NroRecIngreso"].Value = elRecIngreso.NroRecIngreso;
                cmd.Parameters["@Concepto"].Value = elRecIngreso.Concepto;
                cmd.Parameters["@MontoTotal"].Value = elRecIngreso.MontoTotal;
                cmd.Parameters["@A_Cuenta"].Value = elRecIngreso.Cuenta;
                cmd.Parameters["@Saldo"].Value = elRecIngreso.Saldo;
                cmd.Parameters["@FecEmision"].Value = elRecIngreso.FechaEmision;
                cmd.Parameters["@RUC_DNI_Cliente"].Value = elRecIngreso.ElCliente;
                cmd.ExecuteNonQuery();
            }
            catch (SqlException ex) { throw new Exception(ex.Message); }
            catch (Exception e) { throw new Exception(e.Message); }
            finally
            {
                if (cnn.State == ConnectionState.Open)
                {
                    cnn.Close();
                }
            }
            return true;
        }
        public DataTable ObtenerReciboIngreso()
        {
            DataTable lista = null;
            try
            {
                cnn = (SqlConnection)ConexionSQL.getInstancia().getConexion();
                cnn.Open();
                SqlDataAdapter da = new SqlDataAdapter("ObtenerReciboIngreso", cnn);
                da.SelectCommand.CommandType = CommandType.StoredProcedure;
                lista = new DataTable();
                da.Fill(lista);
            }
            catch (SqlException ex) { throw new Exception(ex.Message); }
            catch (Exception e) { throw new Exception(e.Message); }
            finally
            {
                if (cnn.State == ConnectionState.Open)
                {
                    cnn.Close();
                }
            }
            return lista;
        }
        public Boolean ActualizarReciboIngreso(ReciboIngreso elRecIngreso, Int32 CodigoRecbio, String TempoNroRecibo)
        {
            try
            {
                cnn = (SqlConnection)ConexionSQL.getInstancia().getConexion();
                cnn.Open();
                SqlCommand cmd = new SqlCommand("ActualizarReciboIngreso", cnn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add("@NroRecIngreso", SqlDbType.NVarChar, 10);
                cmd.Parameters.Add("@Concepto", SqlDbType.Text);
                cmd.Parameters.Add("@MontoTotal", SqlDbType.Float);
                cmd.Parameters.Add("@A_Cuenta", SqlDbType.Float);
                cmd.Parameters.Add("@Saldo", SqlDbType.Float);
                cmd.Parameters.Add("@FecEmision", SqlDbType.NVarChar, 12);
                cmd.Parameters.Add("@RUC_DNI_Cliente", SqlDbType.NVarChar, 11);
                cmd.Parameters.Add("@IDRecibo", SqlDbType.Int);
                cmd.Parameters.Add("@TempoNro", SqlDbType.NVarChar, 12);

                cmd.Parameters["@NroRecIngreso"].Value = elRecIngreso.NroRecIngreso;
                cmd.Parameters["@Concepto"].Value = elRecIngreso.Concepto;
                cmd.Parameters["@MontoTotal"].Value = elRecIngreso.MontoTotal;
                cmd.Parameters["@A_Cuenta"].Value = elRecIngreso.Cuenta;
                cmd.Parameters["@Saldo"].Value = elRecIngreso.Saldo;
                cmd.Parameters["@FecEmision"].Value = elRecIngreso.FechaEmision;
                cmd.Parameters["@RUC_DNI_Cliente"].Value = elRecIngreso.ElCliente;
                cmd.Parameters["@IDRecibo"].Value = CodigoRecbio;
                cmd.Parameters["@TempoNro"].Value = TempoNroRecibo;
                cmd.ExecuteNonQuery();
            }
            catch (SqlException ex) { throw new Exception(ex.Message); }
            catch (Exception e) { throw new Exception(e.Message); }
            finally
            {
                if (cnn.State == ConnectionState.Open)
                {
                    cnn.Close();
                }
            }
            return true;
        }
    }
}
